/*******************************************************************

    Author: Xiao
    Date: 2022/3/29 17:37

*******************************************************************/

package dao

type Message struct {
	MessageId         int64  `gorm:"primarykey" json:"message_id"`
	MessageUser       int    `json:"message_user"`
	MessageType       string `json:"message_type"`
	MessageWhere      string `json:"message_where"`
	MessageTo         string `json:"message_to"`
	MessageContent    string `json:"message_content"`
	MessageStatus     int    `json:"message_status"`
	MessageCreatetime int64  `gorm:"autoCreateTime" json:"message_createtime"`
	MessageUpdatetime int64  `gorm:"autoUpdateTime" json:"message_updatetime"`
}

// 创建消息
func CreateMessage(m Message) (Message, error) {
	result := MDB.Create(&m)
	return m, result.Error
}

// 通过id更新
func UpdateMessageById(id int64, column map[string]interface{}) error {
	result := MDB.Model(&Message{}).Where("message_id = ?", id).Updates(column)
	return result.Error
}

// 通过条件Map 获取列表
func GetMessageListByMap(m map[string]interface{}, page, limit int) []Message {
	var list []Message
	MDB.Debug().Model(&Message{}).Where(m).Order("message_id desc").Offset((page - 1) * limit).Limit(limit).Find(&list)
	return list
}

// 通过条件Map 获取列表
func GetMessageById(id int64) (Message, error) {
	var m Message
	result := MDB.Where("message_id = ?", id).First(&m)
	return m, result.Error
}

// 根据房间号删除消息
func DeleteMessageByRid(rid string) error {
	return MDB.Where("message_to = ?", rid).Where("message_where = ?", "channel").Delete(&Message{}).Error
}

// 根据消息号删除消息
func DeleteMessageById(id int64) error {
	return MDB.Where("message_id = ?", id).Delete(&Message{}).Error
}
